const { spawn } = require('child_process');
const path = require('path');
const fs = require('fs');

// 启动后端服务
function startBackendServer() {
  return new Promise((resolve, reject) => {
    // 检查 package.json 是否存在
    const packagePath = path.join(__dirname, 'package.json');
    if (!fs.existsSync(packagePath)) {
      reject(new Error('package.json 不存在'));
      return;
    }

    // 检查 node_modules 是否存在
    const nodeModulesPath = path.join(__dirname, 'node_modules');
    if (!fs.existsSync(nodeModulesPath)) {
      reject(new Error('node_modules 不存在，请先运行 npm install'));
      return;
    }

    // 启动服务器
    const serverProcess = spawn('node', ['server.js'], {
      cwd: __dirname,
      stdio: 'pipe'
    });

    let output = '';
    let errorOutput = '';

    serverProcess.stdout.on('data', (data) => {
      output += data.toString();
      console.log('服务器输出:', data.toString());
    });

    serverProcess.stderr.on('data', (data) => {
      errorOutput += data.toString();
      console.error('服务器错误:', data.toString());
    });

    serverProcess.on('close', (code) => {
      if (code === 0) {
        resolve('服务器启动成功');
      } else {
        reject(new Error(`服务器启动失败，退出码: ${code}\n错误信息: ${errorOutput}`));
      }
    });

    serverProcess.on('error', (error) => {
      reject(new Error(`启动服务器时出错: ${error.message}`));
    });

    // 等待一段时间检查服务是否启动成功
    setTimeout(() => {
      // 这里可以添加检查服务是否真正启动的逻辑
      resolve('服务器启动命令已执行');
    }, 3000);
  });
}

// 如果直接运行此脚本
if (require.main === module) {
  startBackendServer()
    .then(result => {
      console.log('✅', result);
      process.exit(0);
    })
    .catch(error => {
      console.error('❌', error.message);
      process.exit(1);
    });
}

module.exports = { startBackendServer }; 